﻿namespace StationDataHub.Models.DTO;

/// <summary>
/// 充电站信息（对应协议5.3 StationInfo）
/// </summary>
public class StationInfo
{
    /// <summary>
    /// 充电站ID（运营商自定义唯一编码，必填，最大20字符）
    /// </summary>
    public string StationID { get; set; } = string.Empty;

    /// <summary>
    /// 运营商ID（与政府平台互通的平台组织机构代码，必填，9位字符）
    /// </summary>
    public string OperatorID { get; set; } = string.Empty;

    /// <summary>
    /// 设备所属方ID（设备所属方组织机构代码，补贴发放对象，必填，9位字符）
    /// </summary>
    public string EquipmentOwnerID { get; set; } = string.Empty;

    /// <summary>
    /// 充电站名称（必填，最大50字符）
    /// </summary>
    public string StationName { get; set; } = string.Empty;

    /// <summary>
    /// 充电站国家代码（如CN，必填，2位字符）
    /// </summary>
    public string CountryCode { get; set; } = string.Empty;

    /// <summary>
    /// 充电站省市辖区编码（参照GB/T2260-2015，必填，最大20字符）
    /// </summary>
    public string AreaCode { get; set; } = string.Empty;

    /// <summary>
    /// 详细地址（必填，最大50字符）
    /// </summary>
    public string Address { get; set; } = string.Empty;

    /// <summary>
    /// 站点电话（联系场站工作人员，非必填，最大30字符）
    /// </summary>
    public string? StationTel { get; set; }

    /// <summary>
    /// 服务电话（平台服务电话，如400电话，必填，最大30字符）
    /// </summary>
    public string ServiceTel { get; set; } = string.Empty;

    /// <summary>
    /// 站点类型（必填，整型枚举：1=公共，50=个人，100=公交专用，101=环卫专用，102=物流专用，103=出租车专用，255=其他）
    /// </summary>
    public string StationType { get; set; }

    /// <summary>
    /// 站点状态（必填，整型枚举：0=未知，1=建设中，5=关闭下线，6=维护中，50=正常使用）
    /// </summary>
    public int StationStatus { get; set; }

    /// <summary>
    /// 车位数量（可充电车位总数，默认0，必填）
    /// </summary>
    public int ParkNums { get; set; }

    /// <summary>
    /// 经度（GCJ-02坐标系，必填，保留小数点后6位）
    /// </summary>
    public decimal StationLng { get; set; }

    /// <summary>
    /// 纬度（GCJ-02坐标系，必填，保留小数点后6位）
    /// </summary>
    public decimal StationLat { get; set; }

    /// <summary>
    /// 站点引导（引导车主找车位的描述文字，非必填，最大100字符）
    /// </summary>
    public string? SiteGuide { get; set; }

    /// <summary>
    /// 建设场所（必填，整型枚举：1=居民区，2=公共机构，3=企事业单位，4=写字楼，5=工业园区，6=交通枢纽，7=大型文体设施，8=城市绿地，9=大型建筑配建停车场，10=路边停车位，11=城际高速服务区，255=其他）
    /// </summary>
    public int Construction { get; set; }

    /// <summary>
    /// 站点照片（充电设备/车位/停车场入口照片，非必填，字符串数组）
    /// </summary>
    public string[] Pictures { get; set; }

    /// <summary>
    /// 使用车型描述（接受的车型，如大巴、物流车，非必填，最大100字符）
    /// </summary>
    public string? MatchCars { get; set; }

    /// <summary>
    /// 车位楼层及数量描述（非必填，最大100字符）
    /// </summary>
    public string? ParkInfo { get; set; }

    /// <summary>
    /// 营业时间（描述文字，非必填，最大100字符）
    /// </summary>
    public string? BusineHours { get; set; }

    /// <summary>
    /// 充电电费率（描述文字，非必填，最大256字符）
    /// </summary>
    public string? ElectricityFee { get; set; }

    /// <summary>
    /// 服务费率（描述文字，非必填，最大100字符）
    /// </summary>
    public string? ServiceFee { get; set; }

    /// <summary>
    /// 停车费（费率描述，非必填，最大100字符）
    /// </summary>
    public string? ParkFee { get; set; }

    /// <summary>
    /// 支付方式（非必填，如“刷卡,线上,现金”，最大20字符；电子钱包卡=刷卡，身份鉴权卡/微信/支付宝/APP=线上）
    /// </summary>
    public string? Payment { get; set; }

    /// <summary>
    /// 是否支持预约（非必填，整型：0=不支持，1=支持，默认0）
    /// </summary>
    public int? SupportOrder { get; set; } = 0;

    /// <summary>
    /// 备注（其他信息，非必填，最大100字符）
    /// </summary>
    public string? Remark { get; set; }

    /// <summary>
    /// 充电设备信息列表（该充电站所有充电设备集合，必填，参照5.4 EquipmentInfo）
    /// </summary>
    public List<EquipmentInfo> EquipmentInfos { get; set; } = [];
}